GraphQL என்றால் என்ன?
GraphQL என்பது APIகளுக்கான ஒரு வினா மொழி மற்றும் உங்கள் தரவுக்கு எதிராக அந்த வினாக்களை இயக்குவதற்கான ஒரு இயக்கநேரம் ஆகும். இது 2012 இல் Facebook மூலம் உருவாக்கப்பட்டு 2015 இல் பொதுவாக வெளியிடப்பட்டது.
முக்கிய அம்சங்கள்
குறிப்பு:
REST இலிருந்து வேறுபட்டு, GraphQL கிளையன்ட்கள் தங்களுக்கு தேவையான தரவை சரியாகக் குறிப்பிட அனுமதிக்கிறது, தரவின் அதிகமான பிரித்தெடுத்தல் மற்றும் குறைவான பிரித்தெடுத்தல் ஆகியவற்றைக் குறைக்கிறது.
Node.js இல் GraphQL உடன் தொடங்குதல்
முன்நிபந்தனைகள்
- Node.js நிறுவப்பட்டது (v14 அல்லது பின்னர் பரிந்துரைக்கப்படுகிறது)
- JavaScript மற்றும் Node.js இன் அடிப்படை அறிவு
- npm அல்லது yarn தொகுப்பு மேலாளர்
படி 1: புதிய திட்டத்தை அமைக்கவும்
ஒரு புதிய கோப்புறையை உருவாக்கி Node.js திட்டத்தைத் தொடங்கவும்:
mkdir graphql-server
cd graphql-server
npm init -y
படி 2: தேவையான தொகுப்புகளை நிறுவவும்
தேவையான சார்புகளை நிறுவவும்:
npm install express express-graphql graphql
இது நிறுவுகிறது:
- express: Node.js க்கான வலை கட்டமைப்பு
- express-graphql: GraphQL HTTP சேவையகத்தை உருவாக்க middleware
- graphql: GraphQL இன் JavaScript குறிப்பு செயலாக்கம்
படி 3: அடிப்படை GraphQL சேவையகத்தை உருவாக்கவும்
3.1 உங்கள் தரவு மாதிரியை வரையறுக்கவும்
ஒரு புதிய கோப்பை server.js உருவாக்கி GraphQL இன் Schema Definition Language (SDL) ஐப் பயன்படுத்தி உங்கள் தரவு மாதிரியை வரையறுக்கத் தொடங்கவும்:
const express = require('express');
const { graphqlHTTP } = require('express-graphql');
const { buildSchema } = require('graphql');
// மாதிரி தரவு
const books = [
{
id: '1',
title: 'The Great Gatsby',
author: 'F. Scott Fitzgerald',
year: 1925,
genre: 'Novel'
},
{
id: '2',
title: 'To Kill a Mockingbird',
author: 'Harper Lee',
year: 1960,
genre: 'Southern Gothic'
}
];
3.2 GraphQL திட்டத்தை வரையறுக்கவும்
திட்ட வரையறையை உங்கள் server.js கோப்பில் சேர்க்கவும்:
// GraphQL திட்ட மொழியைப் பயன்படுத்தி திட்டத்தை வரையறுக்கவும்
const schema = buildSchema(`
# ஒரு புத்தகத்திற்கு தலைப்பு, ஆசிரியர் மற்றும் வெளியீட்டு ஆண்டு உள்ளது
type Book {
id: ID!
title: String!
author: String!
year: Int
genre: String
}
# "Query" வகை அனைத்து GraphQL வினாக்களின் மூலமாகும்
type Query {
# அனைத்து புத்தகங்களையும் பெறவும்
books: [Book!]!
# ID மூலம் ஒரு குறிப்பிட்ட புத்தகத்தைப் பெறவும்
book(id: ID!): Book
# தலைப்பு அல்லது ஆசிரியர் மூலம் புத்தகங்களைத் தேடவும்
searchBooks(query: String!): [Book!]!
}
`);
3.3 Resolvers ஐச் செயல்படுத்தவும்
உண்மையான தரவைப் பெற resolver செயல்பாடுகளைச் சேர்க்கவும்:
// திட்ட புலங்களுக்கான resolvers ஐ வரையறுக்கவும்
const root = {
// அனைத்து புத்தகங்களையும் பெறுவதற்கான resolver
books: () => books,
// ID மூலம் ஒரு ஒற்றை புத்தகத்தைப் பெறுவதற்கான resolver
book: ({ id }) => books.find(book => book.id === id),
// புத்தகங்களைத் தேடுவதற்கான resolver
searchBooks: ({ query }) => {
const searchTerm = query.toLowerCase();
return books.filter(
book =>
book.title.toLowerCase().includes(searchTerm) ||
book.author.toLowerCase().includes(searchTerm)
);
}
};
3.4 Express சேவையகத்தை அமைக்கவும்
சேவையக அமைப்பை முடிக்கவும்:
// ஒரு Express பயன்பாட்டை உருவாக்கவும்
const app = express();
// GraphQL முனையத்தை அமைக்கவும்
app.use('/graphql', graphqlHTTP({
schema: schema,
rootValue: root,
// சோதனைக்காக GraphiQL இடைமுகத்தை இயக்கவும்
graphiql: true,
}));
// சேவையகத்தைத் தொடங்கவும்
const PORT = 4000;
app.listen(PORT, () => {
console.log(`Server running at http://localhost:${PORT}/graphql`);
});
படி 4: உங்கள் GraphQL சேவையகத்தை இயக்கவும் மற்றும் சோதிக்கவும்
4.1 சேவையகத்தைத் தொடங்கவும்
Node.js உடன் உங்கள் சேவையகத்தை இயக்கவும்:
node server.js
நீங்கள் செய்தியைக் காண வேண்டும்: Server running at http://localhost:4000/graphql
4.2 GraphiQL உடன் சோதிக்கவும்
உங்கள் உலாவியைத் திறந்து GraphiQL இடைமுகத்தை அணுக http://localhost:4000/graphql க்குச் செல்லவும்.
எடுத்துக்காட்டு வினா: அனைத்து புத்தகங்களையும் பெறவும்
{
books {
id
title
author
year
}
}
எடுத்துக்காட்டு வினா: ஒரு ஒற்றை புத்தகத்தைப் பெறவும்
{
book(id: "1") {
title
author
genre
}
}
எடுத்துக்காட்டு வினா: புத்தகங்களைத் தேடவும்
{
searchBooks(query: "Gatsby") {
title
author
year
}
}
GraphQL திட்டங்கள் மற்றும் வகைகள்
GraphQL திட்டங்கள் உங்கள் API இன் கட்டமைப்பை மற்றும் கோரப்படக்கூடிய தரவின் வகைகளை வரையறுக்கின்றன.
வகை அமைப்பு
GraphQL உங்கள் தரவின் வடிவத்தை வரையறுக்க ஒரு வகை அமைப்பைப் பயன்படுத்துகிறது. அடிப்படை அளவிடல் வகைகள் இங்கே:
| வகை | விளக்கம் | எடுத்துக்காட்டு |
|---|---|---|
| Int | கையொப்பமிடப்பட்ட 32-பிட் முழு எண் | 42 |
| Float | கையொப்பமிடப்பட்ட இரட்டை-துல்லியமான மிதவை-புள்ளி மதிப்பு | 3.14 |
| String | UTF-8 எழுத்து வரிசை | "Hello, GraphQL!" |
| Boolean | true அல்லது false | true, false |
| ID | தனித்துவமான அடையாளங்காட்டி, ஒரு String ஆக தொடர்முறைப்படுத்தப்பட்டது | "5f8a8d8e8f8c8d8b8a8e8f8c" |